热修复基础

热修复介绍

什么是热修复

动态更新修复 apk 的行为。
不用发布新版本,用户可以更新新的功能及 bug 修复

市面上的热修复技术

QQ 空间的超级补丁方案(Nuwa)

超级补丁基于 DEX 分包方案,使用了多 DEX 加载的原理,大致原理:把 Bug 方法修复以后,放到一个单独的 DEX 里,插入到 dexElements 数组的最前面,让虚拟机去加载修复完后的方法

微信的 Tinker

Tinker 针对超级补丁提出了提供 Dex 差量包,整体替换 Dex 的方案。主要的原理与 QQ 空间超级补丁技术基本相同,区别在于不再将 patch.dex 增加到 dexElements 数组的最前面,而是差量的方式给出 patch.dex,然后将 patch.dex 与应用的 classes.dex 合并,然后整体替换掉旧的 dex 文件。

阿里的 AndFix/HotFix

提供了一种运行时在 native 修复 field 指针的方式,实现方法的替换,达到即时生效无需重启,对应用无性能消耗

美团的 Robust、ele 的 migo、百度的 hotfix、阿里的 dexposed

技术对比:

wubfj

热修复方案

u25c3

如何技术选型